/**
 * @file 
 * @description 事件库类库
 * @author tians
 */

/**
 * @method
 * @description 添加事件
 * @param {HTMLElement} element 要添加事件的元素
 * @param {String} eventName 要添加的时间名称
 * @param {Function} fn 回调函数
 */
export function addEventListener(element, eventName, fn) {
    //判断当前浏览器是否支持此方法
    if (element.addEventListener) {
        element.addEventListener(eventName, fn);
    } else if (element.attachEvent) {
        element.attachEvent("on" + eventName, fn);
    } else {
        // 相当于element.onclick=fn;
        element["on" + eventName] = fn;
    }
}

/**
 * @method
 * @description 移除事件
 * @param {HTMLElement} element 要添加事件的元素
 * @param {String} eventName 要添加的时间名称
 * @param {Function} fn 回调函数
 */
export function removeEventListener(element, eventName, fn) {
    if (element.removeEventListener) {
        element.removeEventListener(eventName, fn);
    } else if ((element, detachEvent)) {
        element.detachEvent("on" + eventName, fn);
    } else {
        element["on" + eventName] = null;
    }
}

/**
 * @method
 * @description 查找offsetTop
 * @param {HTMLElement} dom 要寻找的dom元素
 * @param {Number} top top
 * @returns {Number} 最终查找到的offsetTop值
 */
export function findOffsetTop(dom, top) {
    switch (dom.style.position) {
        case "relative":
        case "fixed":
        case "absolute":
            top += dom.offsetTop;
            break;
    }
    if (dom.parentElement.nodeName === "BODY" || !dom.parentElement) {
        return top;
    }
    return findOffsetTop(dom.parentElement, top);
}